// 这是ES5的原型链绑定方法  

function putilaozu (name) {
    this.name = name 
    this.age =20 
    this.say= function() {
        console.log(`myname is ${this.name}`)
    }


    
}



putilaozu.prototype.change = function qishierbian() {
    console.log('我会七十二变 技能')
}

putilaozu.prototype.jump = function jump() {
    console.log('我会筋斗云 技能')
}
//   new操作符中间有一步官方隐藏的桥梁函数  因为原型链大多数程序员不理解
// 1 创建一个空对象  {}
// 2 我帮你连接原型链 节约内存和性能  
// new1.__proto__ = putilaozu.prototype  
// 3赋值 new1.name = name 
// 4 return 出去这个对象 此时就有绑定好原型链的 一个新new出的对象了 

// 看到__proto__ 的时候  这是寻找最终原型链 不占据自身内存
// prototype 我给一个翻译 叫做共有属性 只占据一次内存 

var new1 = new putilaozu('wukong')
var new2 = new putilaozu('mihou6')
console.log('new1',new1)
console.log('new2',new2)




























class putilaozu {
    constructor(name) {
        this.name =name 
        this.age =20
        this.say = function(){

        }
    }
    // putilaozu.prototype.change = function qishierbian() {
    //     console.log('我会七十二变 技能')
    // }
    
    // putilaozu.prototype.jump = function jump() {
    //     console.log('我会筋斗云 技能')
    // }
    

    qishierbian(){
        console.log('72')
    }
    jindouyun(){
        console.log('jindouyun')
    }
}




var new1 = new putilaozu('wukong')
var new2 = new putilaozu('mihou6')
console.log('new1',new1)
console.log('new2',new2)